Computing systems may have hierarchical memory, which may include multiple levels such as registers, cache, random access memory (RAM), flash memory, and disk. Memory devices at the top of the hierarchy may provide faster memory access, but may not have sufficient storage capacity to store all of the data and/or instructions needed by all applications running on the computing system. Also, in such hierarchical memory systems, each of the memory components may have its own addressing scheme.
Virtual memory may allow programs to access multiple levels of a given memory hierarchy. Such virtual memory may provide a single addressing scheme for applications (e.g., user applications), and map memory addresses from this single addressing scheme to the multiple levels of the memory hierarchy. However, the mapping or translation of virtual memory addresses to the addresses in the memory devices may adversely affect performance of associated applications.